|
RAIS
3.2
|
00001 00028 using System; 00029 using System.Collections.Generic; 00030 using System.Data; 00031 using System.Text; 00032 00033 using QueryParameterTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>; 00034 //using QueryParameterTypes = System.Collections.Generic.Dictionary<RAIS.Common.TableManagement.QueryParameter.QueryParameterType, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>; 00035 00036 namespace RAIS.Common.TableManagement 00037 { 00038 public class QueryParameter: DBObject 00039 { 00040 //********************************************************************* 00041 #region Enumerators 00042 public enum QueryParameterType 00043 { 00044 Unknown, 00045 Lookup, 00046 LookupFromTable, 00047 LookupFromQuery, 00048 DatesRangeStartDate, 00049 DatesRangeEndDate, 00050 PrimaryKey, 00051 Text, 00052 Integer, 00053 Rational, 00054 Date, 00055 PreselectedFacility, 00056 PreselectedDepartment, 00057 UserID, 00058 Xml 00059 } 00060 #endregion 00061 //********************************************************************* 00062 #region Fields 00063 static QueryParameterTypes queryParameterTypesDictionary; 00064 00065 string visibleName; 00066 QueryParameterType type = QueryParameterType.Unknown; 00067 Table table; 00068 Query relatedQuery; 00069 int order; 00070 #endregion 00071 //********************************************************************* 00072 #region Properties 00073 public static QueryParameterTypes QueryParameterTypesDictionary 00074 { 00075 get { return QueryParameter.queryParameterTypesDictionary; } 00076 set { QueryParameter.queryParameterTypesDictionary = value; } 00077 } 00078 00079 public string VisibleName 00080 { 00081 get { return this.visibleName; } 00082 set { this.visibleName = value; } 00083 } 00084 public QueryParameterType Type 00085 { 00086 get { return this.type; } 00087 set { this.type = value; } 00088 } 00089 public QueryParameterTypeData TypeData 00090 { 00091 get { return queryParameterTypesDictionary[this.TypeText]; } 00092 } 00093 public string TypeText 00094 { 00095 get 00096 { 00097 string result = string.Empty; 00098 foreach (KeyValuePair<string, QueryParameterTypeData> queryParameterTypeItem in queryParameterTypesDictionary) 00099 if (queryParameterTypeItem.Value.Type == this.type) 00100 { 00101 result = queryParameterTypeItem.Value.VisibleName; 00102 break; 00103 } 00104 return result; 00105 } 00106 set 00107 { 00108 this.type = queryParameterTypesDictionary[value].Type; 00109 } 00110 } 00111 public Table Table 00112 { 00113 get { return this.table; } 00114 set { this.table = value; } 00115 } 00116 public Query RelatedQuery 00117 { 00118 get { return this.relatedQuery; } 00119 set { this.relatedQuery = value; } 00120 } 00121 public int Order 00122 { 00123 get { return this.order; } 00124 set { this.order = value; } 00125 } 00126 public string DBObjectName 00127 { 00128 get 00129 { 00130 string name = string.Empty; 00131 if (this.relatedQuery != null) 00132 { 00133 name = this.relatedQuery.Name; 00134 } 00135 else 00136 { 00137 if (this.table != null) 00138 name = this.table.Name; 00139 } 00140 return name; 00141 } 00142 } 00143 #endregion 00144 00145 //********************************************************************* 00146 #region Constructors 00147 public QueryParameter() 00148 { } 00149 00150 public QueryParameter(IDataRecord record) 00151 { 00152 this.id = (int)record["PK Query Parameter ID"]; 00153 this.name = record["Query Parameter Name"].ToString(); 00154 this.type = (QueryParameterType)Enum.Parse(typeof(QueryParameterType), record["Query Parameter Type Name"].ToString()); 00155 if (!(record["FK Table ID"] is DBNull)) 00156 { 00157 this.table = new Table(); 00158 this.table.ID = (int)record["FK Table ID"]; 00159 } 00160 if (!(record["FK Related Query ID"] is DBNull)) 00161 { 00162 this.relatedQuery = new Query(); 00163 this.relatedQuery.ID = (int)record["FK Related Query ID"]; 00164 } 00165 this.order = (int)record["Order"]; 00166 this.visibleName = record["Visible Name"].ToString(); 00167 } 00168 #endregion 00169 //********************************************************************* 00170 #region Nested classes 00171 public class QueryParameterTypeData : DBTypeObject 00172 { 00173 //********************************************************************* 00174 #region Properties 00175 public QueryParameterType Type 00176 { 00177 get { return (QueryParameterType)Enum.Parse(typeof(QueryParameterType), this.name); } 00178 } 00179 public bool ParameterTypeForFilters 00180 { 00181 get 00182 { 00183 bool parameterForFilters = false; 00184 if (this.Type == QueryParameterType.Unknown 00185 // The possibility to use just table (not query) for filter has not implemented yet 00186 // that's why LookupFromTable parameter type is commented 00187 //|| this.Type == QueryParameterType.LookupFromTable 00188 || this.Type == QueryParameterType.LookupFromQuery 00189 || this.Type == QueryParameterType.DatesRangeStartDate 00190 || this.Type == QueryParameterType.DatesRangeEndDate 00191 || this.Type == QueryParameterType.PreselectedFacility 00192 || this.Type == QueryParameterType.PreselectedDepartment 00193 || this.Type == QueryParameterType.UserID 00194 ) 00195 { 00196 parameterForFilters = true; 00197 } 00198 return parameterForFilters; 00199 } 00200 } 00201 public bool ParameterTypeForOthers 00202 { 00203 get 00204 { 00205 bool parameterForOthers = false; 00206 if (this.Type == QueryParameterType.Unknown 00207 || this.Type == QueryParameterType.Date 00208 || this.Type == QueryParameterType.Integer 00209 || this.Type == QueryParameterType.Lookup 00210 || this.Type == QueryParameterType.PrimaryKey 00211 || this.Type == QueryParameterType.Rational 00212 || this.Type == QueryParameterType.Text 00213 || this.Type == QueryParameterType.UserID 00214 || this.Type == QueryParameterType.Xml 00215 ) 00216 { 00217 parameterForOthers = true; 00218 } 00219 return parameterForOthers; 00220 } 00221 } 00222 #endregion 00223 //********************************************************************* 00224 #region Constructors 00225 public QueryParameterTypeData() 00226 { } 00227 00228 public QueryParameterTypeData(IDataRecord record) 00229 { 00230 this.id = (int)record["PK Query Parameter Type ID"]; 00231 this.name = record["Query Parameter Type Name"].ToString(); 00232 this.visibleName = record["Query Parameter Type Visible Name"].ToString(); 00233 } 00234 #endregion 00235 } 00236 #endregion 00237 } 00238 }